package xiangmu.schoolpaper.mapper.system;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import xiangmu.schoolpaper.pojo.DTO.SystemTemplateOneByIdDTO;
import xiangmu.schoolpaper.pojo.DTO.SystemTemplateParameterByIdDTO;
import xiangmu.schoolpaper.pojo.DTO.SystemTemplateStatusDTO;
import xiangmu.schoolpaper.pojo.VO.*;

import java.util.List;

@Mapper
public interface SystemTemplateManagementMapper extends BaseMapper<SystemTemplatesInfoVO> {
//    3分页查询所有符合筛选条件的模板记录
    IPage<SystemTemplatesInfoVO> getAllTemplatesByPages(
            Page<SystemTemplatesInfoVO> page,
            Integer facultyId,
            String major,
            String type
    );

//    4修改模板启用状态
//    4-1正常情况：更换启用模板
    Boolean updateTemplateStatusById(SystemTemplateStatusDTO systemTemplateStatusDTO);
//    4-2非正常情况：防止每种模板一个启用的都没有
    Integer countEnabledTemplates(Integer majorId, Integer typeId);

//    5根据ID查看某一条模板基本信息
    SystemTemplateOneByIdVO getTemplateOneById(Integer templateId);

//    【已废弃******后续升级修改逻辑可做微调后使用】
//    6修改某一条模板基本信息
////    6-1根据专业名字查询专业ID
//    Integer getMajorIdByName(String majorName);
////    6-2根据模板类型名字查询模板类型ID
//    Integer getTypeIdByName(String typeName);
////    6-3修改一条模板基本信息
//    Boolean updateTemplateOneById(SystemTemplateOneByIdDTO systemTemplateOneByIdDTO);

//    6修改某一条模板的模板名称
    Boolean updateTemplateNameById(SystemTemplateOneByIdDTO systemTemplateOneByIdDTO);

//    7根据ID查看某一条模板评分参数
    SystemTemplateParameterByIdVO getTemplateParameterById(Integer templateId);

//    8根据ID修改某一条模板评分参数
    Boolean updateTemplateParameterById(SystemTemplateParameterByIdDTO systemTemplateParameterByIdDTO);

//    9根据ID查看某一条模板章节列表
//    9-1获取模板基本信息
    SystemTemplateChapterByIdVO getTemplateBasicInfoById(Integer templateId);
//    9-2获取章节列表
    List<SystemTemplateChapterInfoVO> getTemplateChaptersById(Integer templateId);

//    10根据ID查看某一条模板权重信息
//    10-1获取模板主信息
    SystemTemplateWeightByIdVO getTemplateBasicInfoById2(Integer templateId);
//    10-2获取权重列表
    List<SystemTemplateWeightOneVO> getWeightsById(Integer templateId);

//    11修改某一条模板权重信息
    Integer updateWeightByTemplateIdAndFactorId(Integer templateId, Integer factorId, Double weight);
}
